dll中extern "C"问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 11:02:12
初学dll编程,遇到一个问题是dll输出函数声明前面要加上extern "C",网上的说法是告诉编译器以C方式处理函数名,也即不对函数名进行修饰,那么有一个问题就是无论dll还是应用程序我都是用vc编写的,dll中的函数名处理采用C++方式为什么不行呢,因为应用程序中的函数名处理也是C++方式啊,怎么会出现找不到函数的情况呢?相反,如果dll处理函数名采用C方式,而应用程序中加载动态库,取函数地址,然后调用函数时也应该是针对修饰后的函数名进行调用吧,这样为什么可以呢

实现C++与C及其它语言的混合编程
C\C++编译后的函数名称也不同
如: abc( int X , int Y )
该函数被C编译器编译后在符号库中的名字为_abc,而C++编译器则会产生像_abc_int_int之类的名字
这样就不会使编译器产生歧义,即是调用自己的abc还是dll中的abc函数

你直接使用lib链接的话,可以不使用extren"C"